#include "array.h"
#include <iomanip>
#include <cstdlib>
using std::exit;
using std::cerr;
using std::setw;
Array::Array(int x){
	(*this).size=(x>0?x:10);
	(*this).ptr=new int[size];
	for(int i=0;i<(*this).size;i++){
	(*this).ptr[i]=0;
	}
}
Array::~Array(){
	delete [] ptr;
}
void Array::afisare(){
	for(int i=0;i<(*this).size;i++)
		std::cout<<(*this).ptr[i];
}
int Array::getSize()const{
return (*this).size;
}
const Array& Array::operator =(const Array &right){

if(&right!=this)
	{
		if(size!=right.size)
		{
		delete [] ptr;
		size=right.size;
		ptr=new int[size];
		}

	for(int i=0;i<(*this).size;i++)
	(*this).ptr[i]=right.ptr[i];
	}
	return *this;
}
bool Array::operator==(const Array &right)const{
	if((*this).size!=right.size)
		return false;

	for(int i=0;i<(*this).size;i++)
	if((*this).ptr[i]!=right.ptr[i])
		return false;

	return true;
}
int &Array::operator[](int sub){
if(sub<0||sub>=(*this).size)
{	cerr<<"error subscript"<<sub<<"\n";
	exit(1);}
return ptr[sub];
}
int Array::operator[](int sub)const{
if(sub<0||sub>=(*this).size)
{	cerr<<"error subscript"<<sub<<"\n";
	exit(1);}
return (*this).ptr[sub];
}

std::ostream& operator<<(std::ostream &out,const Array &ar){
for(int i=0;i<ar.size;i++)
	out<<ar.ptr[i]<<" ";
return out;

}
std::istream& operator>>(std::istream &inp,Array& ar){
	for(int i=0;i<ar.size;i++)
	inp>>ar.ptr[i];
	return inp;

}

